#!/bin/bash

# 配置参数
LOG_DIR="${HOME}/log"               # 日志目录
LOG_BASE="cpu_temp"                 # 日志文件基本名
LOG_FILE="${LOG_DIR}/${LOG_BASE}.log" # 完整日志文件路径
INTERVAL=1                          # 记录间隔（秒）
MAX_LOG_SIZE=10485760               # 最大日志大小（10MB）

# 确保日志目录存在
mkdir -p "${LOG_DIR}"
touch "$LOG_FILE"

# 检查lm-sensors是否安装
if ! command -v sensors &> /dev/null; then
    echo "错误：未安装lm-sensors。请先运行: sudo apt install lm-sensors"
    exit 1
fi

# 获取CPU温度函数
get_cpu_temp() {
    # 尝试获取Package温度
    local package_temp=$(sensors coretemp-isa-0000 | grep "Package id 0" | awk '{print $4}' | sed 's/+//;s/°C//')
    
    # 如果Package温度不可用，尝试获取最高核心温度
    if [ -z "$package_temp" ]; then
        sensors coretemp-isa-0000 | grep "Core" | awk '{print $3}' | sed 's/+//;s/°C//' | sort -nr | head -1
    else
        echo "$package_temp"
    fi
}

# 主循环
while true; do
    # 获取当前时间戳
    TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
    
    # 获取CPU温度
    TEMP=$(get_cpu_temp)
    
    # 如果核心温度不可用，尝试备用传感器
    if [ -z "$TEMP" ]; then
        TEMP=$(sensors it8786-isa-0a40 | grep "temp1:" | awk '{print $2}' | sed 's/+//;s/°C//')
    fi
    
    # 记录结果
    if [ -z "$TEMP" ]; then
        echo "[$TIMESTAMP] 错误：无法获取CPU温度" >> "$LOG_FILE"
    else
        echo "[$TIMESTAMP] temp: ${TEMP}°C" >> "$LOG_FILE"
    fi
    
    # 检查日志大小并轮转
    LOG_SIZE=$(stat -c %s "$LOG_FILE")
    if [ "$LOG_SIZE" -gt "$MAX_LOG_SIZE" ]; then
        # 创建新的日志文件名（cpu_temp.1.log）
        NEW_LOG="${LOG_DIR}/${LOG_BASE}.1.log"
        
        # 如果旧轮转文件存在，先删除
        [ -f "$NEW_LOG" ] && rm "$NEW_LOG"
        
        # 重命名当前日志
        mv "$LOG_FILE" "$NEW_LOG"
        
        # 创建新日志文件
        touch "$LOG_FILE"
        
        # 在新日志中记录轮转信息
        echo "[$(date "+%Y-%m-%d %H:%M:%S")] 日志文件已轮转" >> "$LOG_FILE"
    fi
    
    sleep $INTERVAL
done